package com.gxa.ehome.web.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

//   /user 表示只针对user资源访问时做过滤操作
//    /*  表示针对所有的请求资源做过滤
 //    *.do  用后缀形式只过滤特定的目标

//@WebFilter(filterName = "EncodingFilter",urlPatterns = "*.do")
public class EncodingFilter implements Filter {
    // 整个生命周期和服务器是同步的

    @Override
    public void destroy() {
        // 销毁方法

        System.out.println("EncodingFilter被销毁");
    }
    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {


        // 执行过滤操作: 如果符合过滤的规则(设定条件), 就放行, 否则就拦截
        // 放行: chain.doFilter(req, resp);   表示过滤器是一个完整的链条,一个环节如果通过验证,就传递到下一个过滤器
        // 多个过滤器之间的顺序?   如果使用注解,则按照name的字典顺序执行/web.xml配置方式,则按照书写顺序执行
        // 如果所有的过滤器都放行, 最终会执行servlet

        //中文处理
//        req.setCharacterEncoding("UTF-8");
//        resp.setCharacterEncoding("UTF-8");
//        ((HttpServletResponse)resp).setHeader("content-Type","text/html;charset=UTF-8");

        //放行
        chain.doFilter(req, resp);
    }
    @Override
    public void init(FilterConfig config) throws ServletException {
        // 初始化 : 服务器启动的时候就会加载过滤器
        System.out.println("EncodingFilter被初始化");
    }

}
